#pragma once

#include <vector>

class Link;
class Module;
class Ship;

class GameState{
    public:
        GameState(){}
        Ship* CreateShip(float x, float y);
        std::vector<Ship*> GetShips(){ return ships; }

        Module* CreateModule();
        std::vector<Module*> GetModules(){ return modules; }
        Module* FindModule(unsigned int id);

        Link* FindLink(unsigned int id);
        Module* FindLinkParentModule(unsigned int id);
    private:
        std::vector<Ship*> ships;
        std::vector<Module*> modules;
};

extern GameState* gamestate;
